﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using DinhMuc.BUL;
using DevExpress.XtraGrid.Views.Grid;
using DinhMuc.Public;
using System.IO;

namespace DinhMuc.UI.frm_Report
{
    public partial class rp_TKSX_TrangL1 : UserControl
    {
        public rp_TKSX_TrangL1()
        {
            InitializeComponent();
        }
        tblRePortBUL rp = new tblRePortBUL();
        DataTable dtOutput = new DataTable();
        private void rp_TKSX_TrangL1_Load(object sender, EventArgs e)
        {
           // gridControl1.DataSource = rp.rp_TKSX_trangL1();

            colDMtrangL1_TP.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
            colTTtrangL1_TP.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
            colTP.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
            colPL.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
            colDMtrangL1_PL.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;
            colTTtrangL1_PL.OptionsColumn.AllowMerge = DevExpress.Utils.DefaultBoolean.True;   
        }

        private void gridView1_CellMerge(object sender, DevExpress.XtraGrid.Views.Grid.CellMergeEventArgs e)
        {
            ////soDH
            ////DMthoi_TP
            if (e.Column.FieldName == "DMtrangL1_TP")
            {
                //get value soDH              
                GridView view = (GridView)sender;
                string soDH1 = view.GetRowCellValue(e.RowHandle1, colsoDH).ToString();
                string soDH2 = view.GetRowCellValue(e.RowHandle2, colsoDH).ToString();
                if (soDH1 != soDH2)
                {
                    e.Merge = false;
                    e.Handled = true;
                    return;
                }

            }
            if (e.Column.FieldName == "DMtrangL1_PL")
            {
                //get value soDH              
                GridView view = (GridView)sender;
                string soDH1 = view.GetRowCellValue(e.RowHandle1, colsoDH).ToString();
                string soDH2 = view.GetRowCellValue(e.RowHandle2, colsoDH).ToString();
                if (soDH1 != soDH2)
                {
                    e.Merge = false;
                    e.Handled = true;
                    return;
                }

            }
            if (e.Column.FieldName == "TP")
            {
                //get value soDH              
                GridView view = (GridView)sender;
                string soDH1 = view.GetRowCellValue(e.RowHandle1, colsoDH).ToString();
                string soDH2 = view.GetRowCellValue(e.RowHandle2, colsoDH).ToString();
                if (soDH1 != soDH2)
                {
                    e.Merge = false;
                    e.Handled = true;
                    return;
                }

            }
            if (e.Column.FieldName == "PL")
            {
                //get value soDH              
                GridView view = (GridView)sender;
                string soDH1 = view.GetRowCellValue(e.RowHandle1, colsoDH).ToString();
                string soDH2 = view.GetRowCellValue(e.RowHandle2, colsoDH).ToString();
                if (soDH1 != soDH2)
                {
                    e.Merge = false;
                    e.Handled = true;
                    return;
                }

            }
            if (e.Column.FieldName == "TTtrangL1_TP")
            {
                GridView view = (GridView)sender;
                string ca1 = view.GetRowCellValue(e.RowHandle1, colca).ToString();
                string ca2 = view.GetRowCellValue(e.RowHandle2, colca).ToString();
                if (ca1 != ca2)
                {
                    e.Merge = false;
                    e.Handled = true;
                    return;
                }
            }
            if (e.Column.FieldName == "TTtrangL1_PL")
            {
                GridView view = (GridView)sender;
                string ca1 = view.GetRowCellValue(e.RowHandle1, colca).ToString();
                string ca2 = view.GetRowCellValue(e.RowHandle2, colca).ToString();
                if (ca1 != ca2)
                {
                    e.Merge = false;
                    e.Handled = true;
                    return;
                }
            }
        }

        private void btnTim_Click(object sender, EventArgs e)
        {
            tblReportPublic p = new tblReportPublic();
            p.Tu = dateTu.Value;
            p.Den = dateDen.Value;
            dtOutput = rp.rp_TKSX_trangL1(p);
            gridControl1.DataSource = dtOutput;
        }

        private void btnIn_Click(object sender, EventArgs e)
        {
            gridControl1.ShowPrintPreview();
        }

        private void btnExcel_Click(object sender, EventArgs e)
        {
            this.saveFileDialog1.Filter = "txt files (*.xls)|*.xls|All files (*.*)|*.*";
            if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string fileName = this.saveFileDialog1.FileName;
                FileStream stream = new FileStream(fileName.Trim(), FileMode.Create);
                gridControl1.ExportToXls(stream);
                stream.Close();
                MessageBox.Show("Xuất thành công!");
            }
        }

        private void btnPDF_Click(object sender, EventArgs e)
        {
            this.saveFileDialog1.Filter = "txt files (*.pdf)|*.fdf|All files (*.*)|*.*";
            if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string fileName = this.saveFileDialog1.FileName;
                FileStream stream = new FileStream(fileName.Trim(), FileMode.Create);
                gridControl1.ExportToPdf(stream);
                stream.Close();
                MessageBox.Show("Xuất thành công!");
            }
        }

        private void btnWord_Click(object sender, EventArgs e)
        {
            this.saveFileDialog1.Filter = "txt files (*.doc)|*.docx|All files (*.*)|*.*";
            if (this.saveFileDialog1.ShowDialog() == DialogResult.OK)
            {
                string fileName = this.saveFileDialog1.FileName;
                Export2Word(dtOutput);
                MessageBox.Show("Xuất thành công!");
            }
        }
        void Export2Word(DataTable datatable1)
        {
            //Tạo các đối tượng application, document, table của MS Word
            Microsoft.Office.Interop.Word.Application app = new Microsoft.Office.Interop.Word.Application();
            Microsoft.Office.Interop.Word.Document doc;
            Microsoft.Office.Interop.Word.Table table;

            //Hiện (mở) ứng dụng word
            app.Visible = true;

            //Tham số truyền vào các hàm có đối là tuỳ chọn
            object obj = Type.Missing;

            //Tạo một tài liệu mới (để chứa dữ liệu xuất ra)
            doc = app.Documents.Add(ref obj, ref obj, ref obj, ref obj);

            Microsoft.Office.Interop.Word.Range range = doc.Range(ref obj, ref obj);

            //Thêm một bảng có 2 cột và số hàng bằng với số hàng trong datatable.
            table = doc.Tables.Add(range, datatable1.Rows.Count, datatable1.Columns.Count, ref obj, ref obj);

            //Xuất dữ liệu từ datatable sang bảng (trong word). Chú ý: đối với các đối tượng tập hợp
            // trong word thì phần tử đầu tiên có chỉ số là 1 thay vì 0 như trong C#
            for (int i = 0; i < datatable1.Rows.Count; i++)
            {
                for (int j = 0; j < datatable1.Columns.Count; j++)
                {
                    doc.Tables[1].Rows[i + 1].Cells[j + 1].Range.Text = datatable1.Rows[i][j].ToString();
                }
                //doc.Tables[1].Rows[i + 1].Cells[1].Range.Text = datatable1.Rows[i]["STT"].ToString();
                //doc.Tables[1].Rows[i + 1].Cells[2].Range.Text = datatable1.Rows[i]["HoTen"].ToString();
            }
            //Thêm đường viền cho Table nếu cần.
            doc.Select();
            Microsoft.Office.Interop.Word.WdLineStyle BorderValue = Microsoft.Office.Interop.Word.WdLineStyle.wdLineStyleSingle;
            app.Selection.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderTop].LineStyle = BorderValue;
            app.Selection.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderBottom].LineStyle = BorderValue;
            app.Selection.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderLeft].LineStyle = BorderValue;
            app.Selection.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderRight].LineStyle = BorderValue;
            app.Selection.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderVertical].LineStyle = BorderValue;
            app.Selection.Borders[Microsoft.Office.Interop.Word.WdBorderType.wdBorderHorizontal].LineStyle = BorderValue;
        }
    }
}
